/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package administracion.delegate;



import administracion.helper.Utiles_MensajesDialogo;
import administracion.propiedades.Propiedades;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import javax.naming.InitialContext;
import seguridad.administracion.ejb30.TO.DatosUsuarioTO;
import seguridad.administracion.ejb30.TO.DescripcionTiposTO;
import seguridad.administracion.ejb30.TO.DetalleFuncionRolTO;
import seguridad.administracion.ejb30.TO.DetalleUsuarioRolTO;
import seguridad.administracion.ejb30.TO.DetalleUsuarioSistemaTO;
import seguridad.administracion.ejb30.TO.FuncionRolTO;
import seguridad.administracion.ejb30.TO.FuncionesAccessoUsuarioTO;
import seguridad.administracion.ejb30.TO.RolTO;
import seguridad.administracion.ejb30.TO.SistemaTO;
import seguridad.administracion.ejb30.TO.TipoDatoTO;
import seguridad.administracion.ejb30.TO.TipoUsuarioTO;
import seguridad.administracion.ejb30.TO.UsuarioTO;
import seguridad.administracion.ejb30.entity.DetalleRolFuncion;
import seguridad.administracion.ejb30.entity.Detalleusuariorol;
import seguridad.administracion.ejb30.entity.Roles;
import seguridad.administracion.ejb30.entity.Sistema;
import seguridad.administracion.ejb30.entity.Usuario;
import seguridad.administracion.ejb30.facade.SeguridadAdministracionGestionFacadeRemote;

/**
 *
 * @author Renato
 */
public class GestionSeguridadDelegate {
private static GestionSeguridadDelegate gestionDelegate;
  private SeguridadAdministracionGestionFacadeRemote gestionFacade;

  private GestionSeguridadDelegate()
    throws Exception
  {
    try
    {
      Properties propSistema = Propiedades.leePropPrincipal();
      Properties env = new Properties();
        System.out.println( propSistema.getProperty("servidor.ip"));
      env.setProperty("org.omg.CORBA.ORBInitialHost", propSistema.getProperty("servidor.ip"));
      env.setProperty("org.omg.CORBA.ORBInitialPort", propSistema.getProperty("servidor.puerto"));      
      InitialContext ctx = new InitialContext(env);

      this.gestionFacade = ((SeguridadAdministracionGestionFacadeRemote)ctx.lookup("seguridad.administracion.ejb30.facade.SeguridadAdministracionGestionFacadeRemote"));
    }
    catch (Exception e) {
      throw e;
    }
  }

  public static GestionSeguridadDelegate getInstance() throws Exception {
    if (gestionDelegate == null) {
      gestionDelegate = new GestionSeguridadDelegate();
    }
    return gestionDelegate;
  }

  public boolean loguear(String logUser, String passUser) throws Exception {
    boolean retorno = false;
    String mensaje = "";
    List regreso = this.gestionFacade.loguear(logUser, passUser, Propiedades.getIp(), Propiedades.getHost(), Propiedades.getMac());
    retorno = ((Boolean)regreso.get(0)).booleanValue();
    mensaje = regreso.get(1).toString();
    Utiles_MensajesDialogo.mensajeInfo(mensaje);
    return retorno;
  }

  public boolean desloguear(String logUser) throws Exception {
    boolean retorno = false;
    String mensaje = "";
    List regreso = this.gestionFacade.desloguear(logUser, Propiedades.getIp(), Propiedades.getHost(), Propiedades.getMac());
    retorno = ((Boolean)regreso.get(0)).booleanValue();
    mensaje = regreso.get(1).toString();
    Utiles_MensajesDialogo.mensajeInfo(mensaje);
    return retorno;
  }

 public List<Sistema> listaDetalleUsuarioSistemaActivo(String logUser) throws Exception {
    return this.gestionFacade.listaDetalleUsuarioSistemaActivo(logUser);
  }

  public List<DetalleUsuarioSistemaTO> getListaDetalleUsuarioSistema(String logUser) throws Exception {
    return this.gestionFacade.getListaDetalleUsuarioSistema(logUser);
  }
  public List<SistemaTO> getListaSistema() throws Exception {
        return gestionFacade.getListaSistema();
  }
   public List<FuncionRolTO> getListaFunciones() throws Exception {
        return gestionFacade.getListaFunciones();
  }

    public boolean insertarUsuario(Usuario new_user,String zona,String unidad_organica) throws Exception {
        return gestionFacade.insertarUsuario(new_user,zona,unidad_organica);
    }

    public List<UsuarioTO> getListaTrabajadores() throws Exception {
        return gestionFacade.getListaTrabajadores();
    }
   public boolean insertarfuncionRol(List<DetalleRolFuncion> detalles, Roles rol) throws Exception{
      return gestionFacade.insertarfuncionRol(detalles, rol);

  }
     public List<RolTO> getListaRoles() throws Exception {
    return gestionFacade.getListaRoles();
  }
   public List<DetalleFuncionRolTO> obtenerDetalleFuncionRol(int codigo){
    return gestionFacade.obtenerDetalleFuncionRol(codigo);
  }
   public boolean modificarfuncionRol(List<DetalleRolFuncion> detallesagregar, List<DetalleRolFuncion> detallesaeliminar, Roles rol, int estado) throws Exception{
      return gestionFacade.modificarfuncionRol(detallesagregar, detallesaeliminar, rol, estado);


  }

    public boolean eliminarUsuario(String id_usuario) throws Exception {
        return gestionFacade.eliminarUsuario(id_usuario);
    }

    public List<UsuarioTO> getListaUsuarios() throws Exception {
        return gestionFacade.getListaUsuarios();
    }

    public List<SistemaTO> getListaSistemasUsuario(String loguser) throws Exception {
        return gestionFacade.getListaSistemasUsuario(loguser);
    }

    public List<TipoUsuarioTO> getTiposUsuarios() throws Exception {
        return gestionFacade.getTiposUsuarios();
    }

    public boolean setSistemasUsuario(List<SistemaTO> sistemas, String id_usuario) throws Exception {
        return gestionFacade.setSistemasUsuario(sistemas, id_usuario);
    }
     public boolean insertarusuarioRol(List<Detalleusuariorol> detalles, List<Detalleusuariorol> detallese) throws Exception{
      return gestionFacade.insertarusuarioRol(detalles,detallese);

  }
     public List<DetalleUsuarioRolTO> obtenerDetalleUsuarioRol(String codigo){
       return gestionFacade.obtenerDetalleUsuarioRol(codigo);
  }

    public List<DatosUsuarioTO> getListaDatosUsuario(String log_user) throws Exception {
        return gestionFacade.getListaDatosUsuario(log_user);
    }

   public List<FuncionesAccessoUsuarioTO> getFuncionesAccesoUsuario(String logUser) throws Exception {
          return gestionFacade.getFuncionesAccesoUsuario(logUser);
    }

    public List<TipoDatoTO> getTiposDato() throws Exception {
        return gestionFacade.getTiposDato();
    }

    public boolean agregaTiposUsuario(List<DescripcionTiposTO> tipos, String id_usuario) throws Exception {
        return gestionFacade.agregaTiposUsuario(tipos, id_usuario);
    }

    public List<DescripcionTiposTO> getTiposDeUsuario(String user) throws Exception {
        return gestionFacade.getTiposDeUsuario(user);
    }

    public boolean insertarUsuario(Usuario nuevo_user) throws Exception {
        return gestionFacade.insertarUsuario(nuevo_user);
    }

    public boolean verificarClave(String logUser, String passUser) throws SQLException {
        return gestionFacade.verificarClave(logUser, passUser);
    }

    public boolean actualizarClave(String usuario, String clave_nueva) throws Exception {
        return gestionFacade.actualizarClave(usuario, clave_nueva);
    }
 

    
    
    
}
